iT邦幫忙

2024 iThome 鐵人賽

DAY 30
0
佛心分享-IT 人自學之術

區塊鏈技術應用系列 第 30

常見的智能合約安全漏洞2

  • 分享至 

  • xImage
  •  

1.溢出/下溢(Overflow/Underflow)
* 問題:當整數運算結果超過最大或最小範圍時,數值會「溢出」或「下溢」到另一個值。這可能導致錯誤的邏輯執行和資金錯誤。
示例:
https://ithelp.ithome.com.tw/upload/images/20241014/20169238y83CRo3oNo.png
* 解決方案:使用 SafeMath 庫來防止這種情況。在 Solidity 0.8.0 及更高版本,這類運算自動會有安全檢查,但可以額外使用 OpenZeppelin 的 SafeMath。
https://ithelp.ithome.com.tw/upload/images/20241014/20169238xNCCXyBTtC.png
2.權限控制錯誤
* 問題:某些功能應該只能由合約的特定角色(如擁有者)執行,若權限控制不當,可能導致惡意使用者進行敏感操作,例如提款或更改合約狀態。
* 解決方案:實施明確的角色驗證,例如使用 Ownable 模式或 OpenZeppelin 的 AccessControl,來確保只有特定地址或角色可以執行某些功能。
https://ithelp.ithome.com.tw/upload/images/20241014/201692388eKRBxpvx7.png
3.假合約(Fake Contract)
* 問題:合約與另一個合約進行交互時,假合約可能會冒充真實的合約來進行欺詐,從而引發錯誤的邏輯執行或資金損失。
* 解決方案:使用 address.code.length 來驗證是否與合約地址交互,或通過設置白名單的合約進行交互。
https://ithelp.ithome.com.tw/upload/images/20241014/20169238YUQEF751dX.png

** OpenZeppelin**
是一個知名的智能合約開發框架,它提供了一套已經過審計和安全測試的 Solidity 智能合約庫。OpenZeppelin 為智能合約開發者提供了一個強大的工具集,能夠快速且安全地開發合約,並應對智能合約中常見的漏洞。就是站在巨人的肩膀上看得更遠的概念!

30天的學習終於結束了,我對於區塊鏈更加熟悉與了解,包含去中心化技術的理論基礎,還學習了實際的應用開發流程,開始智能合約的開發後,我從基礎的 Solidity 語法開始,逐步構建自己的合約。透過多次練習,我掌握了如何創建變量、函數,以及如何透過合約進行複雜邏輯的自動化操作。我覺得有一個重要的進展是學習並應用OpenZeppelin 提供的模組化合約框架,讓我能夠進一步提升了智能合約的安全性與可擴展性。從智能合約編寫、測試到部署的一整套流程,並對區塊鏈技術有了更全面的理解。這30天學到了是一個巨大的挑戰也學到了許多新的知識與技能,是很有成就感的也覺得這30天的努力很值得!


上一篇
常見的智能合約安全漏洞
系列文
區塊鏈技術應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言